package com.cloudlinkscm.base.filecenter.service;

import com.cloudlinkscm.base.filecenter.model.bo.DownloadResponseBo;
import com.cloudlinkscm.base.filecenter.model.dto.DeleteRequestDto;
import com.cloudlinkscm.base.filecenter.model.dto.DocumentUploadDto;
import com.cloudlinkscm.base.filecenter.model.dto.ImageUploadDto;
import org.springframework.web.multipart.MultipartFile;

import java.util.Collection;
import java.util.Map;

/**
 * Created by syq on 2017/7/22.
 */
public interface FileService {

    /**
     * 批量获取指定的文档文件的下载 url
     * @param fileIds 待下载的文件ID
     * @return  key:文件ID；value: 对应临时下载URL ID
     */
    Map<String,String> documentStreamIds(Collection<String> fileIds);

    /**
     * 批量下载指定的图片文件
     * @param fileIds 待下载的文件ID
     * @return  key:文件ID；value: 对应临时下载URL ID
     */
    Map<String,String> downloadImages(Collection<String> fileIds);

    /**
     * 上传指定的文件
     * @param file
     * @param request
     * @return 文件ID
     */
    String uploadDocument(MultipartFile file, DocumentUploadDto request);

    /**
     * 上传图片
     * @param file
     * @param request
     * @return
     */
    String uploadImage(MultipartFile file, ImageUploadDto request);

    /**
     * 批量删除指定是文件
     * @param dto 待删除的文件ID
     * @return  删除夺文件记录数
     */
    int delete(DeleteRequestDto dto);

    /**
     * 下载指定文件流
     * @param streamId
     * @return
     */
    DownloadResponseBo download(String streamId);
}
